#ifndef PLUGININTERFACE_H
#define PLUGININTERFACE_H

#include <QtPlugin>
#include <QString>
#include <QVariantMap>
#include <QWidget>

// 定义插件接口
class PluginInterface
{
public:
    virtual ~PluginInterface() {}

    // 获取插件名称
    virtual QString name() const = 0;
    
    // 获取插件版本
    virtual QString version() const = 0;
    
    // 获取插件描述
    virtual QString description() const = 0;
    
    // 插件初始化
    virtual bool initialize() = 0;
    
    // 插件卸载
    virtual void cleanup() = 0;
    
    // 获取插件提供的功能列表
    virtual QStringList features() const = 0;
    
    // 执行特定功能
    virtual QVariantMap executeFeature(const QString &feature, const QVariantMap &params) = 0;
    
    // 创建插件的用户界面组件（如果有）
    virtual QWidget* createWidget() = 0;
};

// 声明插件接口
QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(PluginInterface, "com.dbtool.PluginInterface")
QT_END_NAMESPACE

#endif // PLUGININTERFACE_H